package com.diydao;


import com.diydao.dao.IUserDaos;
import com.diydao.dao.IUserDaosImpl;
import com.diydao.dao.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.List;

public class test {
    private InputStream in;
    private IUserDaos userdao;
    /**
     * 初始化
     */
    @Before//用于之前执行
    public void init() throws IOException {
        //1、读取配置文件
        in=Resources.getResourceAsStream("sqlMapping.xml");
        //2创建SqlsessionFactory工厂
       SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(in);
        //3使用工厂创建对象
        userdao=new IUserDaosImpl(factory);

    }
    /**
     * 释放资源
     */
    @After//用于之后执行
    public void destory() throws IOException {
        in.close();
    }
    /**
     * 查询所有
     * @throws IOException
     */
    @Test
    public void  testfindall() throws IOException {
        //5用代理对象执行方法
        List<User> users=userdao.findall();
        for (User user:users){
            System.out.println(user);
        }
        //6关闭流
        in.close();
    }
    /**
     * 增加
     */
    @Test
    public void testInsert ()throws IOException{
        //5创建User对象集合
       User user=new User();
       user.setId("58");
       user.setUsername("王五");
       user.setBirthday(new Date());
       user.setSex("女");
       user.setAddress("陕西");
       userdao.SaveUser(user);
    }
    /**
     * 更新
     */
    @Test
    public void  UpdateTest(){
        User user=new User();
        user.setId("49");
        user.setUsername("第二次修改");
        user.setBirthday(new Date());
        user.setAddress("陕西");
        user.setSex("男");
        userdao.UpdateUser(user);
    }
    /**
     * 删除
     */
    @Test
    public  void delUser(){
        userdao.delUser(49);
    }
    /*
    查询一个
     */
    @Test
    public void findByIdtest(){
      User user=  userdao.findByid(51);
        System.out.println(user);

    }
    /**
     * 模糊查询
     */
    @Test
    public void likeTets(){
        List<User> users=userdao.linkUser("%王");
        for(User user:users){
            System.out.println(user);
        }
    }
    /**
     * 聚合函数
     */
    @Test
    public void findTotalTest(){
       int count= userdao.findTotal();
        System.out.println(count);
    }
    @Test
    public void countboy(){
        int count=userdao.countboy("男");
        System.out.println(count);
    }
}
